package org.jeecg.modules.rental.service;

import com.baomidou.mybatisplus.core.conditions.Wrapper;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.extension.service.IService;
import org.jeecg.common.api.vo.Result;
import org.jeecg.common.rental.vo.LoginRentalAccount;
import org.jeecg.common.system.vo.LoginUser;
import org.jeecg.modules.rental.entity.RentalAccount;
import org.jeecg.modules.rental.req.EBikeTrackReq;

/**
 * @Description: 租车账户(客户)
 * @Author: sean
 * @Date:   2024-04-28
 * @Version: V1.0
 */
public interface IRentalAccountService extends IService<RentalAccount> {
//    Map<String, Object> auth(String code);

//    String authPhone(String encryptedData, String session_key, String iv);

//    void create(AddRentalAccountReq req) throws Exception;

    /**/
//    Integer authentication(AddAuthenticationReq req) throws ClientException, IOException;

//    Result<List<AccountRentalPackegeRsp>>accountPackge(String openId, Integer accountPackgeType);

//    Result<List<RentalPackge>>  allowCoupons(String openId);

//    Result<List<RentalPackge>>  packageList(String carTypeId);

//    Result bind(AccountBindingCarReq bindingCarReq);

    RentalAccount queryAuthentication();

//    List<RentalCarType> lists();

//    Result<Boolean> depositRefund(String accountPackageId);

//    @Transactional
//    Result<Boolean> refundDep(RentalAccountPackage rentalAccountPackage) throws Exception;

//    @Transactional
//    Result<Boolean> allRefund(RentalAccountPackage rentalAccountPackage) throws Exception;

    Result<Boolean> unsubscribePackage(String openId, String id);

//    Result<Page<RentalWithdrawalReviewReq>> withdrawalList(String openId, int pageNum, int pageSize);

    RentalAccount initPassword(String accountId);

    RentalAccount initPayAccount(String openid);

    RentalAccount getAccountByCode(String code);

//    Long bindEBike(String equCode);
//
//    void unBindEBike();

    void addAccount(RentalAccount rentalPayAccount);

    RentalAccount resetPassword(RentalAccount rentalPayAccount);

    RentalAccount getCurrentUserAccount();

    LoginRentalAccount getLoginRentalAccountByAccount(String account);

    RentalAccount findOneNoTenant(Wrapper<RentalAccount> wrapper);

    LoginRentalAccount getEncodeRentalAccount(String account);

    LoginRentalAccount getLoginRentalAccountByWxOpenId(String openid);

    LoginRentalAccount getEncodeRentalAccountByOpenId(String openid);

    Boolean bindPhone(String phone);

    Boolean bindCid(Long accountId, String cid, String clientCode ,String clientPlatform);
}
